package cn.tedu.stock.controller;

import cn.tdu.common.result.JsonResult;
import cn.tedu.stock.service.StockService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/stock")
@Slf4j
public class StockController {

    @Autowired
    private StockService stockService;
    @GetMapping("/check")
    public Integer checkStock(@RequestParam("productCode") String productCode){
        log.info("开始检查库存数量,传入的参数：productCode={}",productCode);
        //参数校验
        if (productCode == null || productCode.trim().isEmpty())
            throw new IllegalArgumentException("商品编码不能为空");
        Integer stock = stockService.checkStock(productCode);
        // 处理商品不存在的情况
        if (stock == null) {
            log.warn("商品不存在或库存查询失败，商品编码：{}", productCode);
            return 0; // 或抛出异常
        }
        log.info("库存查询结果：productCode={}, stock={}", productCode, stock);
        return stock;
    }

    /**
     * 减少库存
     * @param productCode 商品编码
     * @param count 减少的数量
     * @return 减少成功返回true，否则返回false
     */
    @PostMapping("/reduce")
    public JsonResult reduceStock(@RequestParam("productCode") String productCode,
                                  @RequestParam("count") Integer count) {
        log.info("接收到减少库存请求，商品编码：{}，数量：{}", productCode, count);
        // 参数校验
        if (productCode == null || productCode.trim().isEmpty()) {
            return JsonResult.fail("商品编码不能为空");
        }
        if (count == null || count <= 0) {
            return JsonResult.fail("减少数量必须大于0");
        }
        // 执行减少库存操作
        Boolean result = stockService.reduceStock(productCode, count);
        // 根据结果返回相应信息
        if (result != null && result) {
            log.info("库存减少成功，商品编码：{}，数量：{}", productCode, count);
            return JsonResult.ok("库存减少成功");
        } else {
            log.warn("库存减少失败，商品编码：{}，数量：{}", productCode, count);
            return JsonResult.fail("库存减少失败，可能是库存不足");
        }
    }
}



